/**
 * 数字格式化工具类
 */
class NumberUtils {
  /**
   * 格式化金额，确保显示两位小数
   * @param {number|string} amount 金额数值
   * @returns {string} 格式化后的金额字符串
   */
  static formatAmount(amount) {
    if (amount === null || amount === undefined || amount === '') {
      return '0.00'
    }
    
    const num = parseFloat(amount)
    if (isNaN(num)) {
      return '0.00'
    }
    
    return num.toFixed(2)
  }
  
  /**
   * 格式化余额显示
   * @param {number|string} balance 余额数值
   * @returns {string} 格式化后的余额字符串
   */
  static formatBalance(balance) {
    return this.formatAmount(balance)
  }
  
  /**
   * 格式化价格显示
   * @param {number|string} price 价格数值
   * @returns {string} 格式化后的价格字符串
   */
  static formatPrice(price) {
    return this.formatAmount(price)
  }
  
  /**
   * 格式化数字，保留指定小数位数
   * @param {number|string} num 数字
   * @param {number} decimals 小数位数，默认为2
   * @returns {string} 格式化后的数字字符串
   */
  static formatNumber(num, decimals = 2) {
    if (num === null || num === undefined || num === '') {
      return '0.' + '0'.repeat(decimals)
    }
    
    const number = parseFloat(num)
    if (isNaN(number)) {
      return '0.' + '0'.repeat(decimals)
    }
    
    return number.toFixed(decimals)
  }
  
  /**
   * 格式化千分位显示
   * @param {number|string} num 数字
   * @param {number} decimals 小数位数，默认为2
   * @returns {string} 格式化后的数字字符串（带千分位分隔符）
   */
  static formatThousands(num, decimals = 2) {
    const formatted = this.formatNumber(num, decimals)
    return formatted.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
  }
}

export default NumberUtils